#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//int main(void) {
//	int ch = 0;
//	while ((ch = getchar()) != EOF) {
//		if (ch < '0' || ch>'9') 
//		{
//			continue; // 发现不是数字，跳回判断部分，重新getchar；
//		}
//		putchar(ch);
//	}
//
//	return 0;
//}

//int main()
//{
//	int ch = 0;
//	while ((ch = getchar()) != EOF)
//	{
//		if (ch < '0' || ch  > '9')
//		{
//
//		}
//		else
//		{
//			putchar(ch);
//		}
//	}
//
//	return 0;
//}

//int main()
//{
//	int ch = 0;
//	while ((ch = getchar()) != EOF)
//	{
//		if (ch < '0' || ch>'9')
//		{
//			continue;
//		}
//		putchar(ch);
//	}
//
//
//	return 0;
//}



//int main(void) {
//	int i = 0;
//	int j = 0;
//	for (; i < 3; i++) {
//		for (; j < 3; j++) {
//			printf("hehe\n");
//		}
//	}
//
//	return 0;
//
//}


//int main(void) {
//	int i = 0;
//	int k = 0;
//	int count = 0;
//	for (i = 0, k = 0; k < 0; i++, k++)
//	{
//		k++;
//		count++;
//	}
//	printf("count：%d", count);
//
//	return 0;
//}
////判断部分 k=0，赋值为 0 时为假，所以一次都不会循环。
////第一次进for循环前就会进行判断，而不是先执行再判断，那就是dowhile了



//int main(void) {
//	int i = 1;
//	do
//	{
//		printf("%d ", i);
//		i++;
//	} while (i < 1);
//
//	return 0;
//}


//
//int main(void) {
//flag:
//	printf("hehe\n");
//	printf("haha\n");
//	goto flag;
//
//	return 0;
//}

//n的阶乘
//int main()
//{
//	int i = 0;
//	int ret = 1;
//
//	scanf("%d", &i);
//	while (i > 0)
//	{
//		ret *= i;
//		i--;
//	}
//	printf("%d", ret);
//
//	return 0;
//}

//n到1 的阶乘之和

int main()
{
	int sum = 0;
	int i = 0;
	int ret = 1;

	scanf("%d", &i);
	for (int j = 1; j <= i; i++)
	{
		for (int k = j; k >= 1; k++)
		{
			ret *= k;

			sum += ret;
		}
	}
	printf("%d", sum);



	return 0;
}